/*
* Copyright 2010 Pavel Kozhin 
*
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
* http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed  under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License.
*
* Author: Pavel Kozhin.
*/

package org.etherframework.core
{
	import flash.utils.Dictionary;

	public final class AccessDomainValidator
	{
		internal static const accessDictionary:Dictionary = initAccessDictionary();
		internal static const domainDictionary:Dictionary = initDomainDictionary();
		
		public static function validate(access:String, domain:String):void
		{
			if (!accessDictionary[access])
				throw new ArgumentError("Wrong access type.");
			
			if (!domainDictionary[domain])
				throw new ArgumentError("Wrong domain type.");
		}
		
		private static function initDomainDictionary():Dictionary
		{
			var result:Dictionary = new Dictionary();
			
			result[DomainAccess.MULTIPLE] = DomainAccess.MULTIPLE;
			result[DomainAccess.SINGLE] = DomainAccess.SINGLE;
			
			return result;
		}
		
		private static function initAccessDictionary():Dictionary
		{
			var result:Dictionary = new Dictionary();
			
			result[Access.GLOBAL] = Access.GLOBAL;
			result[Access.HIERARCHICAL] = Access.HIERARCHICAL;
			result[Access._HIERARCHICAL] = Access._HIERARCHICAL;
			result[Access.HIERARCHICAL_] = Access.HIERARCHICAL_;
			result[Access.LOCAL] = Access.LOCAL;
			
			return result;
		}
	}
}